IICS(CAI)のチュートリアルを試してみる(Order Management 前編)
はじめに
データアナリティクス事業本部のkobayashiです。
Informatica Intelligent Cloud Services(以降、IICS)はオンプレミスおよびクラウド環境に置かれているデータサービスとアプリケーションサービスを統合するiPaaS(integration Platform as a Service)製品です。
IICSの機能の一つであるInformatica Cloud Application Integration(以降、CAI)ではAPIをGUIの操作で簡単に構築することができます。
前回は外部のサービス使い四則演算を行う比較的シンプルなAPIを作成しました。
今回も公式のチュートリアルを実践してみたいと思います。今回行うのは顧客が商品を注文しその注文を処理するAPIを作成します。
注文処理を行うAPI(Order Management)の作成
基本的にはInformatica Cloud Application Integration - Tutorial:Order Management に記載されている内容を実践していきます。
今回作成するAPIの特徴は以下の通りです。
- リクエストの値を取得して後続の処理で扱う
- 外部APIと連携して値を外部APIに送りそのレスポンスを後続の処理で扱う
- エラーハンドリングを行う
- 複数のプロセスを作成し、一方から他方のプロセスをサブロセスとして呼び出す
- IICSのAPI Managerを使って本番環境でのAPIのデプロイ
エラーハンドルに関しては前回まででも扱いましたので、新しく行うこととしては「サブプロセス」と「APIのデプロイ」になります。
- サブプロセス
- その名の通りプロセス中で他のプロセスを呼び出す仕組みになります。プロセスを再利用できる細かい単位で作成してそれを組み合わせてメインプロセスを作るといった使い方になります。
- API Manager
- CAIで作成したプロセスをAPI化し、公開する機能になります。またAPIのゲートウェイを提供したりAPIの監視や分析を行えます。
- 顧客が注文する
- 注文管理プロセス内でインベントリを取得する
- 注文プロセス内でマージンと販売コミッションを計算する
- 顧客とベンダーに確認メール
の順番でAPIを作成していきますが少し長くなるので上記の1−3を前編として今回のエントリで実施し、4を後編として次回実施します。
ではこれらの機能を使って早速APIを作っていきます。
注文管理プロセスの作成
外部APIをサービスコネクタとして登録
四則演算のときと同様に外部APIをサービスコネクタとそのアプリケーション接続を作成します。 これはインフォマティカの方ですでに用意してくれているのでこれを使います。
手順1)https://network.informatica.com/docs/DOC-17733 にアセスしてGet Inventory Detail Connector.zip
をダウンロードする。
手順2)IICSにログインしてアプリケーション統合
を選択し、サイドメニューから参照
を選択し、右上の新規プロジェクト
を押下しプロジェクトを作成する。
手順3)右上のインポート
を押下し先にダウンロードしたGet Inventory Detail Connector.zip
をファイル選択で選択し、ジョブ名に適当な名前をつける。アセットの選択でGet Inventory Detail
、Get-Inventory-Detail
を選択してインポートを行う。
手順4)サービスコネクタのGet Inventory Detail
とアプリケーション接続Get-Inventory-Detail
をパブリッシュしパブリッシュ済みになることを確認する。
注文管理のプロセスの新規作成
手順1) サイドメニューから新規
を選択するとモーダルが表示されるのでその中からプロセス
を選択し、作成
を押下する。
手順2) プロセスの作成画面デザイナーが表示されて図のように開始
と終了
のステップが用意されているのでまずはこれを編集する。
手順3) APIへのアクセス制御を行うために開始
を左下から押下する。
*今回は特にアクセス制御をしないため匿名アクセスを許可
を選択します。本番で運用する場合は十分な制御を行ってください。この解説は別途エントリで行う予定です。
手順4) リクエストで送られた値を使うのでまずは入力フィールド
を左下から押下し、リクエストとして受け取りたいフィールドを以下の様に設定する。
名前 | タイプ | 必須 |
---|---|---|
CustomerName | テキスト | チェック |
CustomerEmail | テキスト | チェック |
ItemName | テキスト | チェック |
ItemCount | 整数 | チェック |
手順5) 次にAPIで返すレスポンスを指定するために出力フィールド
を左下から押下し、レスポンスとして返したいフィールドを以下の様に設定する。
名前 | タイプ |
---|---|
status | テキスト |
OrderID | テキスト |
ItemPrice | 数 |
OrderPrice | 数 |
手順6) デバッグ用にプロセス処理中のログを全て記録するために詳細
を左下から押下し、トレースレベルで詳細
を選択する。
手順7)サービス
ステップをドラッグ&ドロップし、商品名から価格を取得するアクションを設定する。サービスのタブを選択してアクションの設定を行う。
サービスタイプ
:接続
を選択接続
: 先に設定したGet-Inventory-Detail
を選択アクション
:getInventoryDetail
を選択
手順8)入力タブを選択し、Item Name
の値
でフィールド
> ItemName
を選択する。
手順9)割り当て
ステップをドラッグ&ドロップし、割り当てのタブを選択してアクションの設定を行う。
フィールド | タイプ | 開始 |
---|---|---|
status | コンテンツ | オーダーを受け付けました。 |
OrderID | 計算式 | util:getProcessId() |
ItemPrice | フィールド | item > sellprice |
OrderPrice | 計算式 | $output.ItemPrice * $input.ItemCount |
ここまでで、注文を受け付ける基本的なプロセスができました。図の赤枠部分になります。
それでは一度リクエストを送ってレスポンスを受け取ってみます。
curl "https://apne1-cai.dm1-ap.informaticacloud.com:443/active-bpel/public/rt/xxxxxxxxxx/p_order_management?CustomerName=TestConsumer&CustomerEmail=testconsumer@mailinator.com&ItemName=item1&ItemCount=2"
レスポンス
{ "status": "オーダーを受け付けました。", "OrderID": "501576050621657088", "ItemPrice": 50.0, "OrderPrice": 100.0 }
この様にレスポンスが返ってくることが確認できます。
マージンサービスの作成
次にマージンと販売コミッションの計算を行うマージン詳細サービスを作成します。この処理を行うAPIも外部APIとしてインフォマティカで用意してくれているのでこれを使います。
使うサービスはCalculate_Margin_Service を使います。
手順1) サイドメニューから新規
を選択するとモーダルが表示されるのでその中からサービスコネクタ
>Swaggerからの作成
を選択し、作成
を押下する。
手順2) サービスコネクタの設定値を入力し次へ
を押下する。
- Swagger URL :
https://na1.ai.dm-us.informaticacloud.com/active-bpel/rt/Calculate_Margin_Service
を入力 - 認証の使用 : チェックする
- ユーザー名:
testuser2
を入力 - パスワード:
password2#
を入力
- ユーザー名:
手順3) サービスコネクタで使用できる操作が表示されるが、特に設定を変更する必要はないので次へ
を押下してサービスコネクタを作成する。サービスコネクタが作成したあとにパブリッシュを行う。
手順4) 次にプロセスで使うためにサービスコネクタのアプリケーション接続を作成する。これは先の手順で作成したサービスコネクタをどのランタイム環境で実行するのかを設定する。
サイドメニューから新規
を選択するとモーダルが表示されるのでその中からアプリケーション接続
を選択し、作成
を押下します。
手順5) アプリケーション接続の設定値を入力し保存
を押下して設定を保存する。アプリケーション接続を作成したあとにこちらもパブリッシュを行う。
- タイプ : 手順3で作成したサービスコネクタを選択
- 実行 : 実行したいランタイム環境を選択
- hostNmae:
na1.ai.dm-us.informaticacloud.com:443
を入力 - username:
testuser2
を入力 - password:
password2#
を入力
次にマージン詳細サービスを注文管理プロセスに追加します。
手順6)注文詳細プロセスを開き、開始
ステップを選択し一時フィールド
タブを選択し、以下の値でフィールドを作成する。
名前 | タイプ |
---|---|
InventoryDetails | タイプをさらに表示 を選択 -> カテゴリ で定義された接続タイプ を選択 -> 作成したアプリケーション接続を選択 -> Calculate_Margin_ServiceRequest を選択 |
手順7)割り当て
ステップをドラッグ&ドロップする。割り当てのタブを選択してアクションの設定を行う。
フィールド | タイプ | 開始 |
---|---|---|
InventoryDetails > ItemCostPrice |
フィールド | Item > costprice |
InventoryDetails > ItemCount |
フィールド | ItemCount |
InventoryDetails > ItemSellingPrice |
フィールド | Item > sellprice |
InventoryDetails > SalesCommissionInPercentage |
フィールド | Item > commission |
手順8)サービス
ステップをドラッグ&ドロップし、マージンと販売コミッションを計算するアクションを設定する。サービスのタブを選択してアクションの設定を行う。
サービスタイプ
:接続
を選択接続
: 先に設定したGet-Margin-Detail
を選択アクション
:Calculate_Margin_ServiceOperation
を選択
手順9)入力タブを選択し、body
の値
でフィールド
> InventoryDetails
を選択する。
以上でマージン詳細サービスを注文管理プロセスに追加できました。
ここまでで以下の赤枠の部分が実装できました。
まとめ
- 顧客が注文する
- 注文管理プロセス内でインベントリを取得する
- 注文プロセス内でマージンと販売コミッションを計算する
までを実装しました。次回はこの続きを実装していきたいと思います。
最後まで読んで頂いてありがとうございました。